package Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;

import javax.swing.JOptionPane;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;

import Modelo.DiaFeriado;
import Modelo.Empleado;
import Modelo.Ruta;
import Modelo.Socio;
import Modelo.Terminal;
import Modelo.Cooperativa;
import Modelo.Multa;
import Modelo.TipoPago;
import Modelo.TipoUnidad;
import Vista.VTerminal;
import Controlador.CCooperativa;
import Controlador.CSocio;
@SuppressWarnings("all")
public class CTerminal implements ActionListener {

	
	private Empleado emp;
	private Cooperativa co;
	private Terminal ter;
	private Multa mul;
	private VTerminal vter;
	private int var=0;
	private Socio so;
	private CCooperativa cco;
	private CSocio cso;
	private int vararchivocooperativa = 0;
	private DiaFeriado df;
	private TipoPago tp;
	private CTipoPago ctp;
	
	public CTerminal(){
		this.co = co;
		this.mul = mul;
		this.tp = tp;
		this.ctp = ctp;
		this.vter = new VTerminal(this);
		this.emp = emp;
		this.so = so;
		this.cco = cco;
		this.cso = cso;
		this.df = df;
	
		ter = new Terminal();
		vter.setVisible(true);
		ter.setRif("J-123");
		ter.setDescripcion("El Terminal");
		ter.setDireccion("Lara");
		ter.setTelefono("0251");
		
		vter.getTxtCodigo().setText(ter.getRif());
		vter.getTxtDescripcion().setText(ter.getDescripcion());
		vter.getTxtDireccion().setText(ter.getDireccion());
		vter.getTxtTelefono().setText(ter.getTelefono());
		
		vter.getTxtCodigo().setEnabled(false);
		vter.getTxtDescripcion().setEnabled(false);
		vter.getTxtDireccion().setEnabled(false);
		vter.getTxtTelefono().setEnabled(false);
		
		cargarArchivos();
		
		

	}
	
	//Metodos Para accionar los botones
		@Override
		public void actionPerformed(ActionEvent e) {
		      if(e.getActionCommand().toLowerCase().equals("modificar"))
		      {
		    	  		Modificar();
		      }
		      else if(e.getActionCommand().toLowerCase().equals("guardar"))
		      {
		    	  		Guardar();
		      }else if(e.getActionCommand().toLowerCase().equals("limpiar"))
		      {
		    	  Limpiar();
		      }else if(e.getActionCommand().toLowerCase().equals("eliminar"))
		      {
		    	  Eliminar();
		      }
		      else if(e.getActionCommand().toLowerCase().equals("buscar")){
		    	  Buscar();
		      }else if (e.getActionCommand().toLowerCase().equals("cooperativas")){
		    	 
		    	  
		    	  		RegistrarCooperativa();
		      }else if(e.getActionCommand().toLowerCase().equals("multas")){
		    	 RegistrarMultas();
		    	  
		    	  
		      }else if(e.getActionCommand().toLowerCase().equals("dias feriados")){
		    	  RegistrarDiasFeriados();
		      }else if(e.getActionCommand().toLowerCase().equals("tipos pago")){
		    	  RegistrarTipoPago();
		      }
		}

	private void RegistrarTipoPago() {
		CTipoPago ventanatipopago = new CTipoPago(ter, this);
		
	}

	private void RegistrarDiasFeriados() {
		
		CDiaFeriado ventanadiaferiado = new CDiaFeriado(ter, this);
		
	}

	private void RegistrarMultas() {
		CMulta ventanamultas = new CMulta(ter, this);
			
		}

	private void RegistrarCooperativa() {
		
			CCooperativa ventanacooperativa = new CCooperativa(ter, this);
			
		}
		
	

	private void Buscar() {
			
			
		}

	private void Eliminar() {
			// TODO Auto-generated method stub
			
		}

	private void Limpiar() {

		//pone los campos de texto en blanco
		vter.getTxtCodigo().setText("");
		vter.getTxtDescripcion().setText("");
		vter.getTxtTelefono().setText("");
		vter.getTxtDireccion().setText("");
		
		
		//habilita todos los campos de texto
		
		vter.getTxtCodigo().setEnabled(true);
		vter.getTxtDescripcion().setEnabled(true);
		vter.getTxtTelefono().setEnabled(true);
		vter.getTxtDireccion().setEnabled(true);
			
		}

	private void Guardar() {
			if(ValidarDatos()){
				Terminal ter = new Terminal();
				ter.setRif(vter.getTxtCodigo().getText().toString());
				ter.setTelefono(vter.getTxtTelefono().getText().toString());
				ter.setDescripcion(vter.getTxtDescripcion().getText().toString());
				ter.setDireccion(vter.getTxtDireccion().getText().toString());
				JOptionPane.showMessageDialog(null, "Registro Terminal Exitoso", "Registrar Terminal", 1);
				vter.getTxtCodigo().setEnabled(false);
				vter.getTxtDescripcion().setEnabled(false);
				vter.getTxtDireccion().setEnabled(false);
				vter.getTxtTelefono().setEnabled(false);
				var = 1;
			}
			
		}

	private void Modificar() {
		// TODO Auto-generated method stub
		
	}
	
	public boolean ValidarDatos(){
		if(vter.getTxtCodigo().getText().toString().equalsIgnoreCase("")){
			vter.mostrarMensaje("Debe ingresar el rif del terminal");
			return false;
		}else if(vter.getTxtTelefono().getText().toString().equalsIgnoreCase("")){
			vter.mostrarMensaje("Debe ingresar el telefono del terminal");
			return false;
		}else if (vter.getTxtDescripcion().getText().toString().equalsIgnoreCase("")){
			vter.mostrarMensaje("Debe ingresar una descripcion del terminal");
			return false;
		}else if (vter.getTxtDireccion().getText().toString().equalsIgnoreCase("")){
			vter.mostrarMensaje("Debe ingresar una direccion del terminal");
			return false;
		}
		
		
		return true; //en caso de que esten llenos los campos
		
	}
	
	public void cargarCooperativas() {
		try {

			FileReader lectorarchivo = new FileReader("archivos/Cooperativas.txt");
			BufferedReader bufferedReader = new BufferedReader(lectorarchivo);
			
			
			
			String linea = bufferedReader.readLine();
			
			while(linea != null) {
					
				ArrayList<Ruta> rutas = new ArrayList<Ruta>();
				ArrayList<Empleado> empleados = new ArrayList<Empleado>();
				ArrayList<Socio> socios = new ArrayList<Socio>();
				ArrayList<Multa> multas = new ArrayList<Multa>();
				ArrayList<TipoUnidad> tp = new ArrayList<TipoUnidad>();
				
				
				
				Cooperativa co = new Cooperativa(linea, bufferedReader.readLine(),rutas, empleados, socios, multas , tp, bufferedReader.readLine() );
				/*
				co.setCodigo(linea);
				co.setDescripcion(bufferedReader.readLine());
				co.setTelefono(bufferedReader.readLine());						
				*/
				
			
				
				ter.agregarCooperativa(co);
						
					
				linea = bufferedReader.readLine();
			}
			
			

			
		} catch (Exception ex) {
		
		}
		

		
		
	}
	
	
	public void cargarSocios() {
		try {
			FileReader lectorarchivo = new FileReader("archivos/Socios.txt");
			BufferedReader bufferedReader = new BufferedReader(lectorarchivo);
			
			String linea = bufferedReader.readLine();
			while (linea != null) {
				
				CSocio ventanasocio = new CSocio(co, ter, cco);
				
				ventanasocio.GuardarArchivo(linea, bufferedReader.readLine(), bufferedReader.readLine(), bufferedReader.readLine());
				
				linea = bufferedReader.readLine();

			}
		} catch (Exception ex) {

		}
	}
	
	public void cargarTipoPago() {
		try {
			FileReader lectorarchivo = new FileReader("archivos/TipoPago.txt");
			BufferedReader bufferedReader = new BufferedReader(lectorarchivo);
			
			String linea = bufferedReader.readLine();
			while (linea != null) {
				
				
				TipoPago tp = new TipoPago();
				
				tp.setCodigo(linea);
				tp.setDescripcion(bufferedReader.readLine());
				ter.agregarTipoPago(tp);
				
				linea = bufferedReader.readLine();

			}
		} catch (Exception ex) {

		}
	}
	
	public void cargarDiasFeriados() {
		try {
			FileReader lectorarchivo = new FileReader("archivos/DiasFeriados.txt");
			BufferedReader bufferedReader = new BufferedReader(lectorarchivo);
			
			String linea = bufferedReader.readLine();
			while (linea != null) {
				
				DiaFeriado df = new DiaFeriado(linea, bufferedReader.readLine());
				ter.agregarDiaFeriado(df);
				
				linea = bufferedReader.readLine();

			}
		} catch (Exception ex) {

		}
		
		
	}
	
	
	public void cargarArchivos(){
		cargarCooperativas();
		cargarDiasFeriados();
		cargarTipoPago();
	}
	
	
	
}
